/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.marcelo.agro.lotes.util;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import org.marcelo.agro.core.api.ILotes;
import org.marcelo.agro.entidades.Lotes;
import org.openide.util.Lookup;

/**
 *
 * @author marcelo
 */
public class LotesTableModel extends AbstractTableModel{
    
    private List<Lotes> lotesList;
    
    private static final ILotes il = Lookup.getDefault().lookup(ILotes.class);
    private final int CAMPO_ID = 0;
    private final int CAMPO_DISTRITO = 1;
    private final int CAMPO_NOMBRE = 2;
    private final int CAMPO_SUPERFICIE = 3;
    private final int CAMPO_ES_PROPIO = 4;
    private final int CAMPO_COMPANIA = 5;
    
    private String[] columnNames = {"ID", "DISTRITO","NOMBRE","SUPERFICIE", "ES PROPIO", "COMPAÑIA",};
    

    @Override
    public int getRowCount() {
        return null != lotesList? lotesList.size():0;
    }

    @Override
    public int getColumnCount() {
        return columnNames.length;
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
          Lotes lote =  lotesList.get(rowIndex);
          //Abrir una sesion, conectar el objeto a la session y mostrar los datos, cerrar la session
          switch(columnIndex){
              case CAMPO_ID: return lote.getId();
              case CAMPO_DISTRITO: 
                  String nombre;
                  try{
                       nombre = lote.getDistrito().getNombre();
//                      nombre = "Inicializar datos...";
                  }
                  catch(Exception ex) {
                    nombre =  ex.getMessage();
                  }
                  return nombre;
              case CAMPO_NOMBRE: return lote.getNombre();
              case CAMPO_SUPERFICIE: 
//                  Normalizar la superficie
                  try {
                      return il.fundamentalAsuperficie(lote.getSuperficie(),lote.getUnidadMedidaSuperficie()
                              .getFactorMultiplicacion()).toString() + ", " + 
                              lote.getUnidadMedidaSuperficie();
                  }
                  catch(Exception e) {return "Error:" + e.toString();
                  }
              case CAMPO_ES_PROPIO : 
                  if (lote.getEsPropio() != null)
                      return 0 == lote.getEsPropio()? "NO": "SI";
                  return "NO";
              case CAMPO_COMPANIA: return lote.getCompania();
              default: return null;    
          }
    }
    
    public List<Lotes> getList(){
        return lotesList;
    }
    
    @Override
    public String getColumnName(int column) {
        return columnNames[column];
    }
    
    public LotesTableModel(){
        lotesList = new ArrayList<Lotes>();
    }
    
    public LotesTableModel(List<Lotes> lotesList){
        this.lotesList = lotesList;
    }
    
    
    
    
}
